home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
DB_CLIPP
/
2339.ZIP
/
EXAMPLE.PRG
< prev
next >
Wrap
Text File
|
1988-09-06
|
13KB
|
413 lines
* WALK THROUGH FOR GENERATED CODE FROM DRMENGEN
* EXAMPLE .PRG
* 88.09.02
* BHH
* COPYRIGHT 88.09.02 ALL RIGHTS RESERVED
****************
SET SCOREBOARD OFF
SET TALK OFF
SET BELL OFF
SET CONFIRM OFF
********************************************************************
********* ALL PUBLIC VARIABLES FOR THE MENU ARE SET HERE *********
********* THIS IS A GOOD PLACE TO CALL A ROUTINE TO SET *********
********* PUBLIC VARIABLES FOR YOUR APPLICATION *********
********************************************************************
SCLIPPER = .T.
SDONE = .F.
SY_END = "N"
*********************************************************************
******** ONLY NEED TO CHANGE THE FOLLOWING VARIABLES ****************
******** AND THE STRING VARIABLES IN THE PROCEDURES ****************
******** MENUSET, MENUHEAD, AND CORROSPONDING DROPS ****************
*********************************************************************
SNUMMENUS = 4
SMENULINE = 1
SLINE = SMENULINE + 2
SOFFSET = 2
SDTSTAMP = 0
SMENUWIDTH = 20
SNUMOPT0 = 3
SNUMOPT1 = 2
SNUMOPT2 = 4
SNUMOPT3 = 4
SCOLORBG = "G+R/BG"
SCOLORMH = "R+W/BR"
SCOLORMB = "R B/N, G+R/B"
SCOLORMM = "R+W/B"
SET COLOR TO &SCOLORBG
CLEAR
CALL CURSOFF
**********************************************************
***************** CALLS PROCEDURES TO WRITE HEADING,******
***************** MENUBAR AND SET STRING VARIABLES ******
***************** FOR MENU ITEMS ******
**********************************************************
DO MENUHEAD
DO MENUSET
DO MENUBAR
***********************************************************
***************** MAIN LOOP *******************************
***********************************************************
DO WHILE .T.
*****
DO WHILE .NOT. SDONE
SKEYPRESS = 0
@ SDTSTAMP,2 SAY DATE()
DO WHILE SKEYPRESS = 0
SET COLOR TO &SCOLORMB
@ SDTSTAMP,70 SAY TIME()
SET COLOR TO &SCOLORMB
SKEYPRESS = INKEY()
ENDDO ( SKEYPRESS )
SET COLOR TO &SCOLORMB
***********************************************************
**************** MENU LOOP *******************************
***** MENUMODE = 0 FOR MENUBAR, = 1 WHEN DROP MENUS ON ****
***********************************************************
DO CASE
CASE SKEYPRESS = 336 .OR. SKEYPRESS = 328
IF SMENUMODE = 0
************ TO SCROLL PAST LEFT AND RIGHT LIMITS
************ RESETS WHAT THE ACTIVE COLUMN IS
***************************************************
ELSE
************ LIKE ABOVE FOR DROPPED MENUS EXCEPT
************ FOR UP AND DOWN LIMITS
***************************************************
LOOP
CASE SMENUMODE = 0 .AND. SKEYPRESS = 4 .OR. SMENUMODE = 0 .AND. SKEYPRESS = 19
************ CHANGE ACTIVE COLUMN ON MENUBAR IN RESPONSE
************ TO <- AND ->
****************************************************
LOOP
CASE SMENUMODE = 0 .AND. SKEYPRESS = 13
SDROPIT = "SDROP" +STR(SCHCOL,1)
************* DROPS MENU WITH ENTER KEY PRESSED
***********************************************
DO &SDROPIT
LOOP
CASE SMENUMODE = 1 .AND. SKEYPRESS = 4 .OR. SMENUMODE = 1 .AND. SKEYPRESS = 19
************ SWITCH DROPPED MENUS ON <- OR -> KEY PRESS
************************************************
* ERASE OLD
DO &SDROPIT
LOOP
CASE SMENUMODE = 1 .AND. SKEYPRESS = 24 .OR. SMENUMODE = 1 .AND. SKEYPRESS = 5
************* UP OR DOWN MOVEMENT ON DROPPED MENUS
************************************************
LOOP
CASE SMENUMODE = 0 .AND. SKEYPRESS >= 48 .AND. SKEYPRESS < (48 + SNUMMENUS)
************* DROPS MENU ON KEY PRESS
*************************************************
DO &SDROPIT
LOOP
CASE SMENUMODE = 1 .AND. SKEYPRESS >= 48 .AND. SKEYPRESS < (48 + SNUMOPT) .OR. SMENUMODE = 1 .AND. SKEYPRESS = 13
************* LEAVES MENU LOOP ON SELECTION BY KEYPRESS
************* OR WHEN ENTER KEY IS PRESSED
*************************************************
SMENUMODE = 0
SCHOICE = SSOPT
CLEAR GETS
EXIT
CASE SMENUMODE = 1 .AND. SKEYPRESS = 27
************* CLEARS DROPPED MENU, RETURNS TO MENUMAR
**************************************************
SMENUMODE = 0
LOOP
OTHERWISE
************* TRAPS WRONG KEYPRESS
***************************************************
?? CHR(7)
SKEYPRESS = 0
LOOP
ENDCASE
**********************************************************
************** END MENU LOOP *****************************
**********************************************************
IF SCHOICE >= 1 .AND. SCHOICE <= SNUMOPT&SCHCOL
SSOPT = SCHOICE
SDONE = .T.
ENDIF
ENDDO ( SDONE )
SET COLOR TO &SCOLORBG
@ SMENULINE+2,0 CLEAR TO 14,79
SSUBCH = "SSOPT"+STR(SCHCOL,1)+STR(SSOPT,1)
SSUBCH = TRIM(SSUBCH)
**********************
DO CASE
CASE SSUBCH = "SSOPT00"
SAVE SCREEN
DO MESSOUT2 WITH "ARE YOU SURE YOU WANT TO QUIT ? (Y/N) : "
SET CONFIRM OFF
CALL CURSON
@ 23,RECOL2 GET SY_END PICTURE "A"
READ
SET COLOR TO &SCOLORBG
IF UPPER(SY_END) = "Y"
CLEAR
EXIT
ELSE
CALL CURSOFF
RESTORE SCREEN
@ SMENULINE+1,0 CLEAR TO SMENULINE+1,79
SET COLOR TO &SCOLORMB
@ SMENULINE,SMENUWIDTH*SCHCOL GET &SSELOLD
CLEAR GETS
SDONE = .F.
ENDIF
*********************************************************
**************** SUB ROUTINE CALLING LOOP **************
************ REMOVE '**' MARKED CALLS TO RUN ************
*********************************************************
CASE SSUBCH = "SSOPT01"
DO STARTIT
DO LOADDATA
DO FINISH1
CASE SSUBCH = "SSOPT02"
DO STARTIT
DO LOADINDX
DO FINISH1
CASE SSUBCH = "SSOPT10" * SAME AS FOR "SSOPT01 OR SSOPT02"
CASE SSUBCH = "SSOPT11"
CASE SSUBCH = "SSOPT20"
CASE SSUBCH = "SSOPT21"
CASE SSUBCH = "SSOPT22"
CASE SSUBCH = "SSOPT23"
CASE SSUBCH = "SSOPT30"
CASE SSUBCH = "SSOPT31"
CASE SSUBCH = "SSOPT32"
CASE SSUBCH = "SSOPT33"
OTHERWISE
SMENUMODE = 0
SDONE = .F.
ENDCASE
ENDDO
**********************
CALL CURSON
CLEAR ALL
SET TALK ON
SET BELL ON
SET CONFIRM ON
RETURN
************************************************************************
***************** PROGRAM END ******************************************
************************************************************************
THE FOLLOWING ROUTINES WILL BE IN A PROCEDURE FILE "MENUPROC.PRG" IF
CLIPPER IS NOT SELECTED
*********************************
***** DROP SUBMENU ROUTINES *****
*********************************
PROCEDURE SDROP0
SET COLOR TO &SCOLORMB
@ SMENULINE,SCHCOL*SMENUWIDTH GET SMOPT0
@ SMENULINE+SOFFSET,SCHCOL*SMENUWIDTH GET SSSOPT00
@ SMENULINE+SOFFSET+1,SCHCOL*SMENUWIDTH SAY SSSOPT01
@ SMENULINE+SOFFSET+2,SCHCOL*SMENUWIDTH SAY SSSOPT02
CLEAR GETS
RETURN
PROCEDURE SDROP1 * LIKE ABOVE
PROCEDURE SDROP2
PROCEDURE SDROP3
PROCEDURE STARTIT
****************************************************
***************** PRECEEDS ALL SUBROUTINES ********
***************** CAN CALL CURSON HERE OR ********
**************** DEEPER IN CALLED ROUTINE ********
**************** COVERS CLOCK DISPLAY ********
****************************************************
CALL CURSON
SET COLOR TO &SCOLORBG
@ SMENULINE+2,0 CLEAR TO 24,79
SET COLOR TO &SCOLORMH
@ SDTSTAMP,70 SAY " "
SET COLOR TO &SCOLORMB
RETURN
*******************************************************
************ THESE FOLLOW CALLED SUBROUTINES **********
************ FINISH1 CLEARS BELOW MENULINE **********
************ FINISH2 CLEARS THE WHOLE SCREEN **********
*******************************************************
PROCEDURE FINISH1
CALL CURSOFF
SET COLOR TO &SCOLORBG
@ SMENULINE+1,0 CLEAR TO 24,79
SET COLOR TO &SCOLORMB
@ SMENULINE,SMENUWIDTH*SCHCOL GET &SSELOLD
CLEAR GETS
DONE = .F.
RETURN
PROCEDURE FINISH2
CALL CURSOFF
SET COLOR TO &SCOLORBG
CLEAR
DO MENUHEAD
DO MENUBAR
SET COLOR TO &SCOLORMB
@ SMENULINE,SMENUWIDTH*SCHCOL GET &SSELOLD
CLEAR GETS
DONE = .F.
RETURN
*********************************************************
**************** MESSAGE PROCEDURES ********************
*********************************************************
PROCEDURE MESSOUT
PARAMETERS MESSCOM
RECOL = 46 + LEN(TRIM(MESSCOM))
SET COLOR TO &SCOLORMM
@ 22,45 CLEAR TO 24,RECOL
@ 22,45 TO 24,RECOL DOUBLE
@ 23,46 SAY MESSCOM
RETURN
PROCEDURE MESSOUT1
PARAMETERS MESSCOM
RECOL = 46 + LEN(TRIM(MESSCOM))
SET COLOR TO &SCOLORMM
@ 22,45 CLEAR TO 24,RECOL
@ 22,45 TO 24,RECOL DOUBLE
@ 23,46 SAY MESSCOM
RETURN
PROCEDURE MESSOUT2
PARAMETERS MESSCOM2
RECOL1 = 4 + LEN(TRIM(MESSCOM2))
PUBLIC RECOL2
RECOL2 = RECOL1 - 1
SET COLOR TO &SCOLORMM
@ 22,1 CLEAR TO 24,RECOL1
@ 22,1 TO 24,RECOL1 DOUBLE
@ 23,2 SAY MESSCOM2
RETURN
*********************
PROCEDURE MENUHEAD
SET COLOR TO &SCOLORMH
@ 0,0 CLEAR TO SMENULINE-1,79
*******************************************************
***************** MAIN HEADING GOES HERE *************
*******************************************************
@ 0,20 SAY " THIS IS A TEST HEADING FOR TEST1 "
SET COLOR TO W+/g
@ 15,14 CLEAR TO 24,59
@ 15,14 TO 24,59 DOUBLE
@ 16,16 SAY 'Highlight MENU option by using ' + CHR(26) + ' or ' + CHR(27)
@ 17,16 SAY 'and press '+ CHR(17) + CHR(217) + ' or appropiate menu number '
@ 19,16 SAY 'Highlight SUBMENU option by using ' + CHR(24) + ' or ' + CHR(25)
@ 20,16 SAY 'and press '+ CHR(17) + chr(217) + ' or appropiate option number '
@ 21,16 SAY 'To scroll between MENUS use ' + CHR(26) + ' or ' + CHR(27)
@ 23,16 SAY 'To return to MENU line press the Esc key '
SET COLOR TO &SCOLORMB
RETURN
*********************************************************
*************** DRAW MENUBAR ****************************
*********************************************************
PROCEDURE MENUBAR
SET COLOR TO &SCOLORMB
@ SMENULINE,0 CLEAR TO SMENULINE,79
SMCNTR = 0
DO WHILE SMCNTR < SNUMMENUS
SMENUFD = "SMOPT"+STR(SMCNTR,1)
SMENUITEM = &SMENUFD
@ SMENULINE,SMCNTR*SMENUWIDTH SAY SMENUITEM
SMCNTR = SMCNTR + 1
ENDDO
SMENUFD = "SMOPT"+STR(SCHCOL,1)
SMENUITEM = &SMENUFD
@ SMENULINE,SCHCOL*SMENUWIDTH GET SMENUITEM
CLEAR GETS
RETURN
**********************************************************
*********** SET STRINGS TO BE DISPLAYED *****************
**********************************************************
PROCEDURE MENUSET
PUBLIC SMOPT0,NUMOPT4
PUBLIC SMOPT1,NUMOPT4
PUBLIC SMOPT2,NUMOPT4
PUBLIC SMOPT3,NUMOPT4
PUBLIC SSSOPT00,SSOPT00
PUBLIC SSSOPT01,SSOPT01
PUBLIC SSSOPT02,SSOPT02
PUBLIC SSSOPT10,SSOPT10
PUBLIC SSSOPT11,SSOPT11
PUBLIC SSSOPT20,SSOPT20
PUBLIC SSSOPT21,SSOPT21
PUBLIC SSSOPT22,SSOPT22
PUBLIC SSSOPT23,SSOPT23
PUBLIC SSSOPT30,SSOPT30
PUBLIC SSSOPT31,SSOPT31
PUBLIC SSSOPT32,SSOPT32
PUBLIC SSSOPT33,SSOPT33
SMOPT0 = " 0. FILES "
SMOPT1 = " 1. EDIT "
SMOPT2 = " 2. REPORTS "
SMOPT3 = " 3. MAINT "
SSSOPT00 = " 0. EXIT "
SSOPT00 = " EXIT "
SSSOPT01 = " 1. DATABASES "
SSOPT01 = "LOADDATA"
SSSOPT02 = " 2. INDEXES "
SSOPT02 = "LOADINDX"
SSSOPT10 = " 0. EDIT DATA "
SSOPT10 = "EDITDATA"
SSSOPT11 = " 1. EDIT REPT "
SSOPT11 = "EDITRPTS"
SSSOPT20 = " 0. YTD TRANS "
SSOPT20 = "YTDRPT "
SSSOPT21 = " 1. MTD TRANS "
SSOPT21 = "MTDRPT "
SSSOPT22 = " 2. VENDERS "
SSOPT22 = "VENRPT "
SSSOPT23 = " 3. CUSTOMERS "
SSOPT23 = "CUSRPT "
SSSOPT30 = " 0. BACK UP "
SSOPT30 = "BACKUPFL"
SSSOPT31 = " 1. RESTORE "
SSOPT31 = "RESTFILE"
SSSOPT32 = " 2. RE-INDEX "
SSOPT32 = "INDXFILE"
SSSOPT33 = " 3. IN/OUT "
SSOPT33 = "INOUTFLS"
RETURN
************************************************************************
************************ END *******************************************
************************************************************************